"use client"

import mammoth from "mammoth"

export interface ParsedDocument {
	html: string
	text: string
	metadata?: {
		title?: string
		author?: string
		created?: string
		modified?: string
	}
}

/**
 * 解析Word文档内容
 * @param file Word文档文件
 * @returns 解析后的文档内容
 */
export async function parseWordDocument(file: File): Promise<ParsedDocument> {
	try {
		console.log("parseWordDocument: 开始解析文件", file.name)

		// 将文件转换为ArrayBuffer
		console.log("parseWordDocument: 转换文件为ArrayBuffer")
		const arrayBuffer = await file.arrayBuffer()
		console.log("parseWordDocument: ArrayBuffer大小", arrayBuffer.byteLength)

		// 使用mammoth解析Word文档
		console.log("parseWordDocument: 开始HTML转换")
		const result = await mammoth.convertToHtml({ arrayBuffer })
		console.log("parseWordDocument: HTML转换完成，长度", result.value.length)

		// 提取纯文本内容
		console.log("parseWordDocument: 开始文本提取")
		const textResult = await mammoth.extractRawText({ arrayBuffer })
		console.log("parseWordDocument: 文本提取完成，长度", textResult.value.length)

		const parsedDoc = {
			html: result.value,
			text: textResult.value,
			metadata: {
				title: file.name.replace(".docx", "")
				// 可以在这里添加更多元数据提取逻辑
			}
		}

		console.log("parseWordDocument: 解析完成", {
			htmlLength: parsedDoc.html.length,
			textLength: parsedDoc.text.length,
			title: parsedDoc.metadata.title
		})

		return parsedDoc
	} catch (error) {
		console.error("Word文档解析失败:", error)
		throw new Error(`文档解析失败: ${error instanceof Error ? error.message : "未知错误"}`)
	}
}

/**
 * 清理HTML内容，移除不必要的标签和样式
 * @param html 原始HTML内容
 * @returns 清理后的HTML内容
 */
export function cleanHtmlContent(html: string): string {
	// 移除Word特有的样式和标签
	let cleaned = html
		.replace(/<o:p\s*\/?>/g, "") // 移除Word的o:p标签
		.replace(/<w:[^>]*>/g, "") // 移除Word的w:标签
		.replace(/class="[^"]*"/g, "") // 移除class属性
		.replace(/style="[^"]*"/g, "") // 移除style属性
		.replace(/<span[^>]*>/g, "") // 移除span标签
		.replace(/<\/span>/g, "")
		.replace(/<p[^>]*>/g, "<p>") // 简化p标签
		.replace(/<div[^>]*>/g, "<div>") // 简化div标签
		.replace(/\s+/g, " ") // 合并多个空格
		.trim()

	return cleaned
}

/**
 * 提取文档的主要文本内容（用于AI处理）
 * @param parsedDoc 解析后的文档
 * @returns 清理后的文本内容
 */
export function extractMainContent(parsedDoc: ParsedDocument): string {
	const { text, html } = parsedDoc

	// 如果文本内容太短，尝试从HTML中提取更多内容
	if (text.length < 100) {
		// 移除HTML标签，保留文本内容
		const textFromHtml = html
			.replace(/<[^>]*>/g, " ")
			.replace(/\s+/g, " ")
			.trim()
		return textFromHtml.length > text.length ? textFromHtml : text
	}

	return text
}
